The domain naming system (DNS) is used in TCP/IP networks, such as the Internet, to locate computers or services (e.g., a web server) through user-friendly domain names. When a user enters a domain name into an application (e.g., a browser), DNS services resolve the name to an IP address. Most users prefer a friendly domain name to locate a computer or service (hereinafter “host”) on a network. A friendly name can be easier to learn and remember when compared to an IP address such as 208.77.188.166. However, computers communicate over a network by using IP addresses. To make the use of the network resources easier, DNS provides a way to map the user-friendly name for a host to its IP address.
Domain name resolution usually starts with a DNS client generated query, which contains the domain name of interest. DNS queries can be resolved in a number of different ways. A DNS client can sometimes locally answer a query with an IP address using cached information that was obtained from a previous query. A preferred DNS server to the DNS client can receive the query and use its own cache of information to answer if the DNS client cannot locally resolve the domain name. If the DNS server cannot resolve the domain name, the DNS server can query or contact other DNS servers on behalf of the requesting client to fully resolve the domain name. This last process is known as recursion.